home *** CD-ROM | disk | FTP | other *** search
- /* Generate Polyray data file for the UTAH Teapot */
- #include <stdio.h>
-
- /* STEPS specifies how many tiles each surface patch should be broken
- into when displayed. */
-
- #define U_Steps 3
- #define V_Steps 3
- #define Quality 1
- #define Flatness 0.01
-
- FILE *datfile;
-
- typedef short patchdef[4][4]; /* Surface patch definition */
- typedef double vertex[3]; /* Three dimensional point */
-
- /* Three dimensional points are stored in arrays of type VERTEX.
- The following definitions are used to access the individual
- coodinates of a point. */
-
- #define X 0
- #define Y 1
- #define Z 2
-
- /* Surface patch definitions. Each patch is a four by four array of three
- dimensional points. To save space, the patches are stored as indices
- into a table of vertices defined below. */
-
- static patchdef patches[] = {
-
- /* Rim */
-
- {{1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12},
- {13, 14, 15, 16}
- },
- {
- {4, 17, 18, 19},
- {8, 20, 21, 22},
- {12, 23, 24, 25},
- {16, 26, 27, 28}
- },
- {
- {19, 29, 30, 31},
- {22, 32, 33, 34},
- {25, 35, 36, 37},
- {28, 38, 39, 40}
- },
- {
- {31, 41, 42, 1},
- {34, 43, 44, 5},
- {37, 45, 46, 9},
- {40, 47, 48, 13}
- },
-
- /* Body */
-
- {
- {13, 14, 15, 16},
- {49, 50, 51, 52},
- {53, 54, 55, 56},
- {57, 58, 59, 60}
- },
-
- {
- {16, 26, 27, 28},
- {52, 61, 62, 63},
- {56, 64, 65, 66},
- {60, 67, 68, 69}
- },
-
- {
- {28, 38, 39, 40},
- {63, 70, 71, 72},
- {66, 73, 74, 75},
- {69, 76, 77, 78}
- },
-
- {
- {40, 47, 48, 13},
- {72, 79, 80, 49},
- {75, 81, 82, 53},
- {78, 83, 84, 57}
- },
-
- {
- {57, 58, 59, 60},
- {85, 86, 87, 88},
- {89, 90, 91, 92},
- {93, 94, 95, 96}
- },
-
- {
- {60, 67, 68, 69},
- {88, 97, 98, 99},
- {92, 100, 101, 102},
- {96, 103, 104, 105}
- },
-
- {
- {69, 76, 77, 78},
- {99, 106, 107, 108},
- {102, 109, 110, 111},
- {105, 112, 113, 114}
- },
-
- {
- {78, 83, 84, 57},
- {108, 115, 116, 85},
- {111, 117, 118, 89},
- {114, 119, 120, 93}
- },
-
- /* Handle */
-
- {
- {121, 122, 123, 124},
- {125, 126, 127, 128},
- {129, 130, 131, 132},
- {133, 134, 135, 136}
- },
-
- {
- {124, 137, 138, 121},
- {128, 139, 140, 125},
- {132, 141, 142, 129},
- {136, 143, 144, 133}
- },
-
- {
- {133, 134, 135, 136},
- {145, 146, 147, 148},
- {149, 150, 151, 152},
- {69, 153, 154, 155}
- },
-
- {
- {136, 143, 144, 133},
- {148, 156, 157, 145},
- {152, 158, 159, 149},
- {155, 160, 161, 69}
- },
-
- /* Spout */
-
- {
- {162, 163, 164, 165},
- {166, 167, 168, 169},
- {170, 171, 172, 173},
- {174, 175, 176, 177}
- },
-
- {
- {165, 178, 179, 162},
- {169, 180, 181, 166},
- {173, 182, 183, 170},
- {177, 184, 185, 174}
- },
-
- {
- {174, 175, 176, 177},
- {186, 187, 188, 189},
- {190, 191, 192, 193},
- {194, 195, 197, 197}
- },
-
- {
- {177, 184, 185, 174},
- {189, 198, 199, 186},
- {193, 200, 201, 190},
- {197, 202, 203, 194}
- },
-
- /* Lid */
-
- {
- {204, 204, 204, 204},
- {207, 208, 209, 210},
- {211, 211, 211, 211},
- {212, 213, 214, 215}
- },
-
- {
- {204, 204, 204, 204},
- {210, 217, 218, 219},
- {211, 211, 211, 211},
- {215, 220, 221, 222}
- },
-
- {
- {204, 204, 204, 204},
- {219, 224, 225, 226},
- {211, 211, 211, 211},
- {222, 227, 228, 229}
- },
-
- {
- {204, 204, 204, 204},
- {226, 230, 231, 207},
- {211, 211, 211, 211},
- {229, 232, 233, 212}
- },
-
- {
- {212, 213, 214, 215},
- {234, 235, 236, 237},
- {238, 239, 240, 241},
- {242, 243, 244, 245}
- },
-
- {
- {215, 220, 221, 222},
- {237, 246, 247, 248},
- {241, 249, 250, 251},
- {245, 252, 253, 254}
- },
-
- {
- {222, 227, 228, 229},
- {248, 255, 256, 257},
- {251, 258, 259, 260},
- {254, 261, 262, 263}
- },
-
- {
- {229, 232, 233, 212},
- {257, 264, 265, 234},
- {260, 266, 267, 238},
- {263, 268, 269, 242}
- },
-
- /* Bottom */
-
- {
- {270, 270, 270, 270},
- {279, 280, 281, 282},
- {275, 276, 277, 278},
- {271, 272, 273, 274}
- },
-
- {
- {270, 270, 270, 270},
- {282, 289, 290, 291},
- {278, 286, 287, 288},
- {274, 283, 284, 285}
- },
-
- {
- {270, 270, 270, 270},
- {291, 298, 299, 300},
- {288, 295, 296, 297},
- {285, 292, 293, 294}
- },
-
- {
- {270, 270, 270, 270},
- {300, 305, 306, 279},
- {297, 303, 304, 275},
- {294, 301, 302, 271}
- }
- };
-
- #define npatches ((sizeof patches) / (16 * sizeof(short)))
-
- /* Vertex table. Vertices in this table are addressed by the indices in
- the patch table above. Note that index 0 is never used. */
-
- static vertex vertices[] = {
-
- { 0, 0, 0 }, /* 0: Throwaway */
-
- { 1.4, 0, 2.4 }, /* 1 */
- { 1.4, -0.784, 2.4 }, /* 2 */
- { 0.784, -1.4, 2.4 }, /* 3 */
- { 0, -1.4, 2.4 }, /* 4 */
- { 1.3375, 0, 2.53125 }, /* 5 */
-
- { 1.3375, -0.749, 2.53125 }, /* 6 */
- { 0.749, -1.3375, 2.53125 }, /* 7 */
- { 0, -1.3375, 2.53125 }, /* 8 */
- { 1.4375, 0, 2.53125 }, /* 9 */
- { 1.4375, -0.805, 2.53125 }, /* 10 */
-
- { 0.805, -1.4375, 2.53125 }, /* 11 */
- { 0, -1.4375, 2.53125 }, /* 12 */
- { 1.5, 0, 2.4 }, /* 13 */
- { 1.5, -0.84, 2.4 }, /* 14 */
- { 0.84, -1.5, 2.4 }, /* 15 */
-
- { 0, -1.5, 2.4 }, /* 16 */
- { -0.784, -1.4, 2.4 }, /* 17 */
- { -1.4, -0.784, 2.4 }, /* 18 */
- { -1.4, 0, 2.4 }, /* 19 */
- { -0.749, -1.3375, 2.53125 }, /* 20 */
-
- { -1.3375, -0.749, 2.53125 }, /* 21 */
- { -1.3375, 0, 2.53125 }, /* 22 */
- { -0.805, -1.4375, 2.53125 }, /* 23 */
- { -1.4375, -0.805, 2.53125 }, /* 24 */
- { -1.4375, 0, 2.53125 }, /* 25 */
-
- { -0.84, -1.5, 2.4 }, /* 26 */
- { -1.5, -0.84, 2.4 }, /* 27 */
- { -1.5, 0, 2.4 }, /* 28 */
- { -1.4, 0.784, 2.4 }, /* 29 */
- { -0.784, 1.4, 2.4 }, /* 30 */
-
- { 0, 1.4, 2.4 }, /* 31 */
- { -1.3375, 0.749, 2.53125 }, /* 32 */
- { -0.749, 1.3375, 2.53125 }, /* 33 */
- { 0, 1.3375, 2.53125 }, /* 34 */
- { -1.4375, 0.805, 2.53125 }, /* 35 */
-
- { -0.805, 1.4375, 2.53125 }, /* 36 */
- { 0, 1.4375, 2.53125 }, /* 37 */
- { -1.5, 0.84, 2.4 }, /* 38 */
- { -0.84, 1.5, 2.4 }, /* 39 */
- { 0, 1.5, 2.4 }, /* 40 */
-
- { 0.784, 1.4, 2.4 }, /* 41 */
- { 1.4, 0.784, 2.4 }, /* 42 */
- { 0.749, 1.3375, 2.53125 }, /* 43 */
- { 1.3375, 0.749, 2.53125 }, /* 44 */
- { 0.805, 1.4375, 2.53125 }, /* 45 */
-
- { 1.4375, 0.805, 2.53125 }, /* 46 */
- { 0.84, 1.5, 2.4 }, /* 47 */
- { 1.5, 0.84, 2.4 }, /* 48 */
- { 1.75, 0, 1.875 }, /* 49 */
- { 1.75, -0.98, 1.875 }, /* 50 */
-
- { 0.98, -1.75, 1.875 }, /* 51 */
- { 0, -1.75, 1.875 }, /* 52 */
- { 2, 0, 1.35 }, /* 53 */
- { 2, -1.12, 1.35 }, /* 54 */
- { 1.12, -2, 1.35 }, /* 55 */
-
- { 0, -2, 1.35 }, /* 56 */
- { 2, 0, 0.9 }, /* 57 */
- { 2, -1.12, 0.9 }, /* 58 */
- { 1.12, -2, 0.9 }, /* 59 */
- { 0, -2, 0.9 }, /* 60 */
-
- { -0.98, -1.75, 1.875 }, /* 61 */
- { -1.75, -0.98, 1.875 }, /* 62 */
- { -1.75, 0, 1.875 }, /* 63 */
- { -1.12, -2, 1.35 }, /* 64 */
- { -2, -1.12, 1.35 }, /* 65 */
-
- { -2, 0, 1.35 }, /* 66 */
- { -1.12, -2, 0.9 }, /* 67 */
- { -2, -1.12, 0.9 }, /* 68 */
- { -2, 0, 0.9 }, /* 69 */
- { -1.75, 0.98, 1.875 }, /* 70 */
-
- { -0.98, 1.75, 1.875 }, /* 71 */
- { 0, 1.75, 1.875 }, /* 72 */
- { -2, 1.12, 1.35 }, /* 73 */
- { -1.12, 2, 1.35 }, /* 74 */
- { 0, 2, 1.35 }, /* 75 */
-
- { -2, 1.12, 0.9 }, /* 76 */
- { -1.12, 2, 0.9 }, /* 77 */
- { 0, 2, 0.9 }, /* 78 */
- { 0.98, 1.75, 1.875 }, /* 79 */
- { 1.75, 0.98, 1.875 }, /* 80 */
-
- { 1.12, 2, 1.35 }, /* 81 */
- { 2, 1.12, 1.35 }, /* 82 */
- { 1.12, 2, 0.9 }, /* 83 */
- { 2, 1.12, 0.9 }, /* 84 */
- { 2, 0, 0.45 }, /* 85 */
-
- { 2, -1.12, 0.45 }, /* 86 */
- { 1.12, -2, 0.45 }, /* 87 */
- { 0, -2, 0.45 }, /* 88 */
- { 1.5, 0, 0.225 }, /* 89 */
- { 1.5, -0.84, 0.225 }, /* 90 */
-
- { 0.84, -1.5, 0.225 }, /* 91 */
- { 0, -1.5, 0.225 }, /* 92 */
- { 1.5, 0, 0.15 }, /* 93 */
- { 1.5, -0.84, 0.15 }, /* 94 */
- { 0.84, -1.5, 0.15 }, /* 95 */
-
- { 0, -1.5, 0.15 }, /* 96 */
- { -1.12, -2, 0.45 }, /* 97 */
- { -2, -1.12, 0.45 }, /* 98 */
- { -2, 0, 0.45 }, /* 99 */
- { -0.84, -1.5, 0.225 }, /* 100 */
-
- { -1.5, -0.84, 0.225 }, /* 101 */
- { -1.5, 0, 0.225 }, /* 102 */
- { -0.84, -1.5, 0.15 }, /* 103 */
- { -1.5, -0.84, 0.15 }, /* 104 */
- { -1.5, 0, 0.15 }, /* 105 */
-
- { -2, 1.12, 0.45 }, /* 106 */
- { -1.12, 2, 0.45 }, /* 107 */
- { 0, 2, 0.45 }, /* 108 */
- { -1.5, 0.84, 0.225 }, /* 109 */
- { -0.84, 1.5, 0.225 }, /* 110 */
-
- { 0, 1.5, 0.225 }, /* 111 */
- { -1.5, 0.84, 0.15 }, /* 112 */
- { -0.84, 1.5, 0.15 }, /* 113 */
- { 0, 1.5, 0.15 }, /* 114 */
- { 1.12, 2, 0.45 }, /* 115 */
-
- { 2, 1.2, 0.45 }, /* 116 */
- { 0.84, 1.5, 0.225 }, /* 117 */
- { 1.5, 0.84, 0.225 }, /* 118 */
- { 0.84, 1.5, 0.15 }, /* 119 */
- { 1.5, 0.84, 0.15 }, /* 120 */
-
- { -1.6, 0, 2.025 }, /* 121 */
- { -1.6, -0.3, 2.025 }, /* 122 */
- { -1.5, -0.3, 2.25 }, /* 123 */
- { -1.5, 0, 2.25 }, /* 124 */
- { -2.3, 0, 2.025 }, /* 125 */
-
- { -2.3, -0.3, 2.025 }, /* 126 */
- { -2.5, -0.3, 2.25 }, /* 127 */
- { -2.5, 0, 2.25 }, /* 128 */
- { -2.7, 0, 2.025 }, /* 129 */
- { -2.7, -0.3, 2.025 }, /* 130 */
-
- { -3, -0.3, 2.25 }, /* 131 */
- { -3, 0, 2.25 }, /* 132 */
- { -2.7, 0, 1.8 }, /* 133 */
- { -2.7, -0.3, 1.8 }, /* 134 */
- { -3, -0.3, 1.8 }, /* 135 */
-
- { -3, 0, 1.8 }, /* 136 */
- { -1.5, 0.3, 2.25 }, /* 137 */
- { -1.6, 0.3, 2.025 }, /* 138 */
- { -2.5, 0.3, 2.25 }, /* 139 */
- { -2.3, 0.3, 2.025 }, /* 140 */
-
- { -3, 0.3, 2.25 }, /* 141 */
- { -2.7, 0.3, 2.025 }, /* 142 */
- { -3, 0.3, 1.8 }, /* 143 */
- { -2.7, 0.3, 1.8 }, /* 144 */
- { -2.7, 0, 1.575 }, /* 145 */
-
- { -2.7, -0.3, 1.575 }, /* 146 */
- { -3, -0.3, 1.35 }, /* 147 */
- { -3, 0, 1.35 }, /* 148 */
- { -2.5, 0, 1.125 }, /* 149 */
- { -2.5, -0.3, 1.125 }, /* 150 */
-
- { -2.65, -0.3, 0.9375 }, /* 151 */
- { -2.65, 0, 0.9375 }, /* 152 */
- { -2, -0.3, 0.9 }, /* 153 */
- { -1.9, -0.3, 0.6 }, /* 154 */
- { -1.9, 0, 0.6 }, /* 155 */
-
- { -3, 0.3, 1.35 }, /* 156 */
- { -2.7, 0.3, 1.575 }, /* 157 */
- { -2.65, 0.3, 0.9375 }, /* 158 */
- { -2.5, 0.3, 1.125 }, /* 159 */
- { -1.9, 0.3, 0.6 }, /* 160 */
-
- { -2, 0.3, 0.9 }, /* 161 */
- { 1.7, 0, 1.425 }, /* 162 */
- { 1.7, -0.66, 1.425 }, /* 163 */
- { 1.7, -0.66, 0.6 }, /* 164 */
- { 1.7, 0, 0.6 }, /* 165 */
-
- { 2.6, 0, 1.425 }, /* 166 */
- { 2.6, -0.66, 1.425 }, /* 167 */
- { 3.1, -0.66, 0.825 }, /* 168 */
- { 3.1, 0, 0.825 }, /* 169 */
- { 2.3, 0, 2.1 }, /* 170 */
-
- { 2.3, -0.25, 2.1 }, /* 171 */
- { 2.4, -0.25, 2.025 }, /* 172 */
- { 2.4, 0, 2.025 }, /* 173 */
- { 2.7, 0, 2.4 }, /* 174 */
- { 2.7, -0.25, 2.4 }, /* 175 */
-
- { 3.3, -0.25, 2.4 }, /* 176 */
- { 3.3, 0, 2.4 }, /* 177 */
- { 1.7, 0.66, 0.6 }, /* 178 */
- { 1.7, 0.66, 1.425 }, /* 179 */
- { 3.1, 0.66, 0.825 }, /* 180 */
-
- { 2.6, 0.66, 1.425 }, /* 181 */
- { 2.4, 0.25, 2.025 }, /* 182 */
- { 2.3, 0.25, 2.1 }, /* 183 */
- { 3.3, 0.25, 2.4 }, /* 184 */
- { 2.7, 0.25, 2.4 }, /* 185 */
-
- { 2.8, 0, 2.475 }, /* 186 */
- { 2.8, -0.25, 2.475 }, /* 187 */
- { 3.525, -0.25, 2.49375 }, /* 188 */
- { 3.525, 0, 2.49375 }, /* 189 */
- { 2.9, 0, 2.475 }, /* 190 */
-
- { 2.9, -0.15, 2.475 }, /* 191 */
- { 3.45, -0.15, 2.5125 }, /* 192 */
- { 3.45, 0, 2.5125 }, /* 193 */
- { 2.8, 0, 2.4 }, /* 194 */
- { 2.8, -0.15, 2.4 }, /* 195 */
-
- { 3.2, -0.15, 2.4 }, /* 196 */
- { 3.2, 0, 2.4 }, /* 197 */
- { 3.525, 0.25, 2.49375 }, /* 198 */
- { 2.8, 0.25, 2.475 }, /* 199 */
- { 3.45, 0.15, 2.5125 }, /* 200 */
-
- { 2.9, 0.15, 2.475 }, /* 201 */
- { 3.2, 0.15, 2.4 }, /* 202 */
- { 2.8, 0.15, 2.4 }, /* 203 */
- { 0, 0, 3.15 }, /* 204 */
- { 0, -0.002, 3.15 }, /* 205 */
-
- { 0.002, 0, 3.15 }, /* 206 */
- { 0.8, 0, 3.15 }, /* 207 */
- { 0.8, -0.45, 3.15 }, /* 208 */
- { 0.45, -0.8, 3.15 }, /* 209 */
- { 0, -0.8, 3.15 }, /* 210 */
-
- { 0, 0, 2.85 }, /* 211 */
- { 0.2, 0, 2.7 }, /* 212 */
- { 0.2, -0.112, 2.7 }, /* 213 */
- { 0.112, -0.2, 2.7 }, /* 214 */
- { 0, -0.2, 2.7 }, /* 215 */
-
- { -0.002, 0, 3.15 }, /* 216 */
- { -0.45, -0.8, 3.15 }, /* 217 */
- { -0.8, -0.45, 3.15 }, /* 218 */
- { -0.8, 0, 3.15 }, /* 219 */
- { -0.112, -0.2, 2.7 }, /* 220 */
-
- { -0.2, -0.112, 2.7 }, /* 221 */
- { -0.2, 0, 2.7 }, /* 222 */
- { 0, 0.002, 3.15 }, /* 223 */
- { -0.8, 0.45, 3.15 }, /* 224 */
- { -0.45, 0.8, 3.15 }, /* 225 */
-
- { 0, 0.8, 3.15 }, /* 226 */
- { -0.2, 0.112, 2.7 }, /* 227 */
- { -0.112, 0.2, 2.7 }, /* 228 */
- { 0, 0.2, 2.7 }, /* 229 */
- { 0.45, 0.8, 3.15 }, /* 230 */
-
- { 0.8, 0.45, 3.15 }, /* 231 */
- { 0.112, 0.2, 2.7 }, /* 232 */
- { 0.2, 0.112, 2.7 }, /* 233 */
- { 0.4, 0, 2.55 }, /* 234 */
- { 0.4, -0.224, 2.55 }, /* 235 */
-
- { 0.224, -0.4, 2.55 }, /* 236 */
- { 0, -0.4, 2.55 }, /* 237 */
- { 1.3, 0, 2.55 }, /* 238 */
- { 1.3, -0.728, 2.55 }, /* 239 */
- { 0.728, -1.3, 2.55 }, /* 240 */
-
- { 0, -1.3, 2.55 }, /* 241 */
- { 1.3, 0, 2.4 }, /* 242 */
- { 1.3, -0.728, 2.4 }, /* 243 */
- { 0.728, -1.3, 2.4 }, /* 244 */
- { 0, -1.3, 2.4 }, /* 245 */
-
- { -0.224, -0.4, 2.55 }, /* 246 */
- { -0.4, -0.224, 2.55 }, /* 247 */
- { -0.4, 0, 2.55 }, /* 248 */
- { -0.728, -1.3, 2.55 }, /* 249 */
- { -1.3, -0.728, 2.55 }, /* 250 */
-
- { -1.3, 0, 2.55 }, /* 251 */
- { -0.728, -1.3, 2.4 }, /* 252 */
- { -1.3, -0.728, 2.4 }, /* 253 */
- { -1.3, 0, 2.4 }, /* 254 */
- { -0.4, 0.224, 2.55 }, /* 255 */
-
- { -0.224, 0.4, 2.55 }, /* 256 */
- { 0, 0.4, 2.55 }, /* 257 */
- { -1.3, 0.728, 2.55 }, /* 258 */
- { -0.728, 1.3, 2.55 }, /* 259 */
- { 0, 1.3, 2.55 }, /* 260 */
-
- { -1.3, 0.728, 2.4 }, /* 261 */
- { -0.728, 1.3, 2.4 }, /* 262 */
- { 0, 1.3, 2.4 }, /* 263 */
- { 0.224, 0.4, 2.55 }, /* 264 */
- { 0.4, 0.224, 2.55 }, /* 265 */
-
- { 0.728, 1.3, 2.55 }, /* 266 */
- { 1.3, 0.728, 2.55 }, /* 267 */
- { 0.728, 1.3, 2.4 }, /* 268 */
- { 1.3, 0.728, 2.4 }, /* 269 */
- { 0, 0, 0 }, /* 270 */
-
- { 1.5, 0, 0.15 }, /* 271 */
- { 1.5, 0.84, 0.15 }, /* 272 */
- { 0.84, 1.5, 0.15 }, /* 273 */
- { 0, 1.5, 0.15 }, /* 274 */
- { 1.5, 0, 0.075 }, /* 275 */
-
- { 1.5, 0.84, 0.075 }, /* 276 */
- { 0.84, 1.5, 0.075 }, /* 277 */
- { 0, 1.5, 0.075 }, /* 278 */
- { 1.425, 0, 0 }, /* 279 */
- { 1.425, 0.798, 0 }, /* 280 */
-
- { 0.798, 1.425, 0 }, /* 281 */
- { 0, 1.425, 0 }, /* 282 */
- { -0.84, 1.5, 0.15 }, /* 283 */
- { -1.5, 0.84, 0.15 }, /* 284 */
- { -1.5, 0, 0.15 }, /* 285 */
-
- { -0.84, 1.5, 0.075 }, /* 286 */
- { -1.5, 0.84, 0.075 }, /* 287 */
- { -1.5, 0, 0.075 }, /* 288 */
- { -0.798, 1.425, 0 }, /* 289 */
- { -1.425, 0.798, 0 }, /* 290 */
-
- { -1.425, 0, 0 }, /* 291 */
- { -1.5, -0.84, 0.15 }, /* 292 */
- { -0.84, -1.5, 0.15 }, /* 293 */
- { 0, -1.5, 0.15 }, /* 294 */
- { -1.5, -0.84, 0.075 }, /* 295 */
-
- { -0.84, -1.5, 0.075 }, /* 296 */
- { 0, -1.5, 0.075 }, /* 297 */
- { -1.425, -0.798, 0 }, /* 298 */
- { -0.798, -1.425, 0 }, /* 299 */
- { 0, -1.425, 0 }, /* 300 */
-
- { 0.84, -1.5, 0.15 }, /* 301 */
- { 1.5, -0.84, 0.15 }, /* 302 */
- { 0.84, -1.5, 0.075 }, /* 303 */
- { 1.5, -0.84, 0.075 }, /* 304 */
- { 0.798, -1.425, 0 }, /* 305 */
-
- { 1.425, -0.798, 0 } /* 306 */
- };
-
- #define nvert ((sizeof vertices) / (3 * sizeof(double)))
-
- static void
- display_patch(patch)
- patchdef patch;
- {
- int i, j;
- fprintf(datfile, "object {\n");
- fprintf(datfile, " bezier %d, %g, %d, %d,\n",
- Quality, Flatness, U_Steps, V_Steps);
- for (i=0;i<4;i++) {
- fprintf(datfile, " ");
- for (j=0;j<4;j++) {
- fprintf(datfile, "<%g, %g, %g>",
- vertices[patch[i][j]][X],
- vertices[patch[i][j]][Z],
- vertices[patch[i][j]][Y]);
- if (j<3) fprintf(datfile, ", ");
- }
- if (i<3)
- fprintf(datfile, ",\n");
- else
- fprintf(datfile, "\n");
- }
- fprintf(datfile, " }\n");
- }
-
- void
- main()
- {
- int i;
-
- if ((datfile = fopen("teapot.inc", "wt")) != NULL) {
- fprintf(datfile, "define teapot\n");
- fprintf(datfile, "object {\n");
- for (i = 0; i < npatches; i++) {
- switch (i) {
- case 0:
- fprintf(datfile, "# Rim\n");
- break;
- case 4:
- fprintf(datfile, "# Body\n");
- break;
- case 12:
- fprintf(datfile, "# Handle\n");
- break;
- case 16:
- fprintf(datfile, "# Spout\n");
- break;
- case 20:
- fprintf(datfile, "# Lid\n");
- break;
- case 28:
- fprintf(datfile, "# Bottom\n");
- break;
- }
- if (i==0)
- fprintf(datfile, " ");
- else
- fprintf(datfile, " + ");
- display_patch(patches[i]);
- }
- fprintf(datfile, " bounds object {\n");
- fprintf(datfile, " box <-3.4683, -2.02, 0>,\n");
- fprintf(datfile, " <3.03, 2.02, 3.1815> }\n");
- fprintf(datfile, " }\n");
- }
- }
-